/*
 * RegistroLexico.cpp
 *
 *  Created on: 03/09/2011
 *      Author: emma
 */

#include "RegistroLexico.h"

RegistroLexico::RegistroLexico(string unTexto, int unId) {
	this->termino = unTexto;
	this->id = unId;
}

int RegistroLexico::obtenerLongitud() {
	return (this->termino.size() + sizeof(this->id));
}

string RegistroLexico::obtenerLexico() {
	return this->termino;
}

int RegistroLexico::obtenerId() {
	return this->id;
}


char* RegistroLexico::aBinario() {
	char* binario = new char[this->obtenerLongitud()];
	char* stringAChar = new char[this->termino.size()];
	strcpy(stringAChar, this->termino.c_str());
	memcpy(binario, stringAChar, this->termino.size());
	int posicion = this->termino.size();
	memcpy(binario + posicion, &id, sizeof(int));

	return binario;
}

void RegistroLexico::desdeBinario(char* binario, int longitudDelRegistro) {
	int longitudDeTermino = longitudDelRegistro-(sizeof(int));
	char* reg = new char[longitudDeTermino];

	this->termino = "";

	memcpy(reg, binario, longitudDeTermino);

	for (int i = 0; i < longitudDeTermino; i++)
		this->termino += reg[i];

	memcpy(&id, binario + longitudDeTermino , sizeof(int));

}
